package dao

import (
	"time"
)

// 这是 Advertisement 的全局公开dao对象，被service层调用!
var AdvertisementDao = advertisementDao{}

// 广告表
// 这是 advertisement表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Advertisement struct {
	Id        int       `json:"id" form:"id" db:"id" v:"id"`
	Name      string    `json:"name" form:"name" db:"name" v:"name"`                     // 广告名称
	AdType    bool      `json:"ad_type" form:"ad_type" db:"ad_type" v:"ad_type"`         // 广告类型:0-直接在html显示；1-js 操作 html
	Code      string    `json:"code" form:"code" db:"code" v:"code"`                     // 广告内容代码(html、js等)
	Source    string    `json:"source" form:"source" db:"source" v:"source"`             // 广告来源，如 百度联盟，阿里云
	IsOnline  bool      `json:"is_online" form:"is_online" db:"is_online" v:"is_online"` // 是否在线：0-下线；1-在线
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}

// 注意:这是 Advertisement 的私有dao对象，只能在dao层内使用!
type advertisementDao struct {
	InsertTemplate func(arg Advertisement) (int64, error)               //插入一条记录
	UpdateTemplate func(arg Advertisement) (int64, error)               //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                        `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Advertisement, error)                `arg:"id"` //根据传入的主键获取一条记录
	Find 		   func(ids []int)([]Advertisement,error)`arg:"ids"`

	FindAll	   	   func(path string)([]PageAd,error)`arg:"path"`

}

// 页面广告管理表
// 这是 page_ad表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type PageAd struct {
	Id        int       `json:"id" form:"id" db:"id" v:"id"`
	Path      string    `json:"path" form:"path" db:"path" v:"path"`                     // 页面路径
	AdId      int       `json:"ad_id" form:"ad_id" db:"ad_id" v:"ad_id"`                 // 广告ID(关联Advertisement的Id)
	Position  string    `json:"position" form:"position" db:"position" v:"position"`     // 广告在页面的位置，英文字符串
	IsOnline  bool      `json:"is_online" form:"is_online" db:"is_online" v:"is_online"` // 是否在线:0-下线,1-在线
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}



